package v1

import corev1 "k8s.io/api/core/v1"

type BaseObject struct {
	GluenetMeta `json:",inline"`
	Status      Status `json:"status"`
}

type TestAgentObject struct {
	BaseObject
	Spec Agent `json:"spec"`
}
type AgentObj struct {
	GluenetMeta `json:",inline"`
	Spec        Agent `json:"spec"`
	Status      `json:"status"`
}

type HostObj struct {
	GluenetMeta `json:",inline"`
	Spec        Host `json:"spec"`
	Status      `json:"status"`
}
type DockerContainerObj struct {
	GluenetMeta `json:",inline"`
	Spec        ContaienrDetial `json:"spec"`
	Status      `json:"status"`
}

type HelmReleaseObj struct {
	GluenetMeta `json:",inline"`
	Spec        ReleaseDetial `json:"spec"`
	Status      `json:"status"`
}

type K8sServiceObj struct {
	GluenetMeta `json:",inline"`
	Spec        corev1.Service `json:"spec"`
	Status      Status         `json:"status"`
}

type K8sPodObj struct {
	GluenetMeta `json:",inline"`
	Spec        corev1.Pod `json:"spec"`
	Status      Status     `json:"status"`
}

type KubeVirtVirtualMachineObj struct {
	GluenetMeta `json:",inline"`
	Spec        VirtualMachine `json:"spec"`
	Status      Status         `json:"status"`
}

type KubeVirtVirtualMachineServiceObj struct {
	GluenetMeta `json:",inline"`
	Spec        VirtualMachineService `json:"spec"`
	Status      Status                `json:"status"`
}

type KubeVirtVirtualMachineInstanceObj struct {
	GluenetMeta `json:",inline"`
	Spec        VirtualMachineInstance `json:"spec"`
	Status      Status                 `json:"status"`
}

type GluenetAppInstance struct {
	GluenetMeta `json:",inline"`
	Spec        App `json:"spec"`
}
